package com.ruralflow.flow.mapper;

import java.util.List;

import com.ruralflow.common.annotation.UserRoleLimiter;
import com.ruralflow.flow.domain.FlowApply;
import org.apache.ibatis.annotations.Param;

/**
 * 流动申请Mapper接口
 * 
 * @author ruralflow
 * @date 2025-02-17
 */
public interface FlowApplyMapper 
{
    /**
     * 查询流动申请
     * 
     * @param applyId 流动申请主键
     * @return 流动申请
     */
    public FlowApply selectFlowApplyByApplyId(Long applyId);

    /**
     * 查询流动申请列表
     * 
     * @param flowApply 流动申请
     * @return 流动申请集合
     */
    @UserRoleLimiter
    public List<FlowApply> selectFlowApplyList(FlowApply flowApply);

    /**
     * 新增流动申请
     * 
     * @param flowApply 流动申请
     * @return 结果
     */
    public int insertFlowApply(FlowApply flowApply);

    /**
     * 修改流动申请
     * 
     * @param flowApply 流动申请
     * @return 结果
     */
    public int updateFlowApply(FlowApply flowApply);

    /**
     * 删除流动申请
     * 
     * @param applyId 流动申请主键
     * @param updateBy 修改人
     * @return 结果
     */
    public int deleteFlowApplyByApplyId(@Param("applyId") Long applyId,
                                        @Param("updateBy") String updateBy);

    /**
     * 批量删除流动申请
     * 
     * @param applyIds 需要删除的数据主键集合
     * @param updateBy 修改人
     * @return 结果
     */
    public int deleteFlowApplyByApplyIds(@Param("applyIds") Long[] applyIds,
                                         @Param("updateBy") String updateBy);

    /**
     * 查询流动申请数量
     * @return
     */
    Integer selectCountFlowApply();
}
